// NeL - MMORPG Framework <https://wiki.ryzom.dev/>
// Copyright (C) 2020  Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

#include "stdmisc.h"
#include "nel/misc/ucstring.h"
#include "nel/misc/utf_string_view.h"

#ifdef DEBUG_NEW
	#define new DEBUG_NEW
#endif

namespace NLMISC {

static const char s_StringToLowerC3[64 * 4] = {
	'\xC3', '\xA0', '\x00', 0,
	'\xC3', '\xA1', '\x00', 0,
	'\xC3', '\xA2', '\x00', 0,
	'\xC3', '\xA3', '\x00', 0,
	'\xC3', '\xA4', '\x00', 0,
	'\xC3', '\xA5', '\x00', 0,
	'\xC3', '\xA6', '\x00', 0,
	'\xC3', '\xA7', '\x00', 0,
	'\xC3', '\xA8', '\x00', 0,
	'\xC3', '\xA9', '\x00', 0,
	'\xC3', '\xAA', '\x00', 0,
	'\xC3', '\xAB', '\x00', 0,
	'\xC3', '\xAC', '\x00', 0,
	'\xC3', '\xAD', '\x00', 0,
	'\xC3', '\xAE', '\x00', 0,
	'\xC3', '\xAF', '\x00', 0,
	'\xC3', '\xB0', '\x00', 0,
	'\xC3', '\xB1', '\x00', 0,
	'\xC3', '\xB2', '\x00', 0,
	'\xC3', '\xB3', '\x00', 0,
	'\xC3', '\xB4', '\x00', 0,
	'\xC3', '\xB5', '\x00', 0,
	'\xC3', '\xB6', '\x00', 0,
	0, 0, 0, 0,
	'\xC3', '\xB8', '\x00', 0,
	'\xC3', '\xB9', '\x00', 0,
	'\xC3', '\xBA', '\x00', 0,
	'\xC3', '\xBB', '\x00', 0,
	'\xC3', '\xBC', '\x00', 0,
	'\xC3', '\xBD', '\x00', 0,
	'\xC3', '\xBE', '\x00', 0,
	0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerC4[64 * 4] = {
	'\xC4', '\x81', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x83', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x85', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x87', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x89', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x8B', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x8D', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x8F', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x91', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x93', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x95', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x97', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x99', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x9B', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x9D', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\x9F', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xA1', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xA3', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xA5', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xA7', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xA9', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xAB', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xAD', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xAF', '\x00', 0,
	0, 0, 0, 0,
	'\x69', '\x00', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xB3', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xB5', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xB7', '\x00', 0,
	0, 0, 0, 0,
	0, 0, 0, 0,
	'\xC4', '\xBA', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xBC', '\x00', 0,
	0, 0, 0, 0,
	'\xC4', '\xBE', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x80', '\x00', 0,
};

static const char s_StringToLowerC5[64 * 4] = {
	0, 0, 0, 0,
	'\xC5', '\x82', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x84', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x86', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x88', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xC5', '\x8B', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x8D', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x8F', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x91', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x93', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x95', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x97', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x99', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x9B', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x9D', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\x9F', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xA1', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xA3', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xA5', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xA7', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xA9', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xAB', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xAD', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xAF', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xB1', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xB3', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xB5', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xB7', '\x00', 0,
	0, 0, 0, 0,
	'\xC3', '\xBF', '\x00', 0,
	'\xC5', '\xBA', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xBC', '\x00', 0,
	0, 0, 0, 0,
	'\xC5', '\xBE', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerC6[64 * 4] = {
	0, 0, 0, 0,
	'\xC9', '\x93', '\x00', 0,
	'\xC6', '\x83', '\x00', 0,
	0, 0, 0, 0,
	'\xC6', '\x85', '\x00', 0,
	0, 0, 0, 0,
	'\xC9', '\x94', '\x00', 0,
	'\xC6', '\x88', '\x00', 0,
	0, 0, 0, 0,
	'\xC9', '\x96', '\x00', 0,
	'\xC9', '\x97', '\x00', 0,
	'\xC6', '\x8C', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xC7', '\x9D', '\x00', 0,
	'\xC9', '\x99', '\x00', 0,
	'\xC9', '\x9B', '\x00', 0,
	'\xC6', '\x92', '\x00', 0,
	0, 0, 0, 0,
	'\xC9', '\xA0', '\x00', 0,
	'\xC9', '\xA3', '\x00', 0,
	0, 0, 0, 0,
	'\xC9', '\xA9', '\x00', 0,
	'\xC9', '\xA8', '\x00', 0,
	'\xC6', '\x99', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xC9', '\xAF', '\x00', 0,
	'\xC9', '\xB2', '\x00', 0,
	0, 0, 0, 0,
	'\xC9', '\xB5', '\x00', 0,
	'\xC6', '\xA1', '\x00', 0,
	0, 0, 0, 0,
	'\xC6', '\xA3', '\x00', 0,
	0, 0, 0, 0,
	'\xC6', '\xA5', '\x00', 0,
	0, 0, 0, 0,
	'\xCA', '\x80', '\x00', 0,
	'\xC6', '\xA8', '\x00', 0,
	0, 0, 0, 0,
	'\xCA', '\x83', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xC6', '\xAD', '\x00', 0,
	0, 0, 0, 0,
	'\xCA', '\x88', '\x00', 0,
	'\xC6', '\xB0', '\x00', 0,
	0, 0, 0, 0,
	'\xCA', '\x8A', '\x00', 0,
	'\xCA', '\x8B', '\x00', 0,
	'\xC6', '\xB4', '\x00', 0,
	0, 0, 0, 0,
	'\xC6', '\xB6', '\x00', 0,
	0, 0, 0, 0,
	'\xCA', '\x92', '\x00', 0,
	'\xC6', '\xB9', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xC6', '\xBD', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerC7[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xC7', '\x86', '\x00', 0,
	'\xC7', '\x86', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\x89', '\x00', 0,
	'\xC7', '\x89', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\x8C', '\x00', 0,
	'\xC7', '\x8C', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\x8E', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\x90', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\x92', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\x94', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\x96', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\x98', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\x9A', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\x9C', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xC7', '\x9F', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\xA1', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\xA3', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\xA5', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\xA7', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\xA9', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\xAB', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\xAD', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\xAF', '\x00', 0,
	0, 0, 0, 0,
	0, 0, 0, 0,
	'\xC7', '\xB3', '\x00', 0,
	'\xC7', '\xB3', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\xB5', '\x00', 0,
	0, 0, 0, 0,
	'\xC6', '\x95', '\x00', 0,
	'\xC6', '\xBF', '\x00', 0,
	'\xC7', '\xB9', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\xBB', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\xBD', '\x00', 0,
	0, 0, 0, 0,
	'\xC7', '\xBF', '\x00', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerC8[64 * 4] = {
	'\xC8', '\x81', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x83', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x85', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x87', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x89', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x8B', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x8D', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x8F', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x91', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x93', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x95', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x97', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x99', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x9B', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x9D', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\x9F', '\x00', 0,
	0, 0, 0, 0,
	'\xC6', '\x9E', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\xA3', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\xA5', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\xA7', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\xA9', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\xAB', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\xAD', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\xAF', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\xB1', '\x00', 0,
	0, 0, 0, 0,
	'\xC8', '\xB3', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xE2', '\xB1', '\xA5', 0,
	'\xC8', '\xBC', '\x00', 0,
	0, 0, 0, 0,
	'\xC6', '\x9A', '\x00', 0,
	'\xE2', '\xB1', '\xA6', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerC9[64 * 4] = {
	0, 0, 0, 0,
	'\xC9', '\x82', '\x00', 0,
	0, 0, 0, 0,
	'\xC6', '\x80', '\x00', 0,
	'\xCA', '\x89', '\x00', 0,
	'\xCA', '\x8C', '\x00', 0,
	'\xC9', '\x87', '\x00', 0,
	0, 0, 0, 0,
	'\xC9', '\x89', '\x00', 0,
	0, 0, 0, 0,
	'\xC9', '\x8B', '\x00', 0,
	0, 0, 0, 0,
	'\xC9', '\x8D', '\x00', 0,
	0, 0, 0, 0,
	'\xC9', '\x8F', '\x00', 0,
	0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerCD[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xCD', '\xB1', '\x00', 0,
	0, 0, 0, 0,
	'\xCD', '\xB3', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xCD', '\xB7', '\x00', 0,
	0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xCF', '\xB3', '\x00', 0,
};

static const char s_StringToLowerCE[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xCE', '\xAC', '\x00', 0,
	0, 0, 0, 0,
	'\xCE', '\xAD', '\x00', 0,
	'\xCE', '\xAE', '\x00', 0,
	'\xCE', '\xAF', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\x8C', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\x8D', '\x00', 0,
	'\xCF', '\x8E', '\x00', 0,
	0, 0, 0, 0,
	'\xCE', '\xB1', '\x00', 0,
	'\xCE', '\xB2', '\x00', 0,
	'\xCE', '\xB3', '\x00', 0,
	'\xCE', '\xB4', '\x00', 0,
	'\xCE', '\xB5', '\x00', 0,
	'\xCE', '\xB6', '\x00', 0,
	'\xCE', '\xB7', '\x00', 0,
	'\xCE', '\xB8', '\x00', 0,
	'\xCE', '\xB9', '\x00', 0,
	'\xCE', '\xBA', '\x00', 0,
	'\xCE', '\xBB', '\x00', 0,
	'\xCE', '\xBC', '\x00', 0,
	'\xCE', '\xBD', '\x00', 0,
	'\xCE', '\xBE', '\x00', 0,
	'\xCE', '\xBF', '\x00', 0,
	'\xCF', '\x80', '\x00', 0,
	'\xCF', '\x81', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\x83', '\x00', 0,
	'\xCF', '\x84', '\x00', 0,
	'\xCF', '\x85', '\x00', 0,
	'\xCF', '\x86', '\x00', 0,
	'\xCF', '\x87', '\x00', 0,
	'\xCF', '\x88', '\x00', 0,
	'\xCF', '\x89', '\x00', 0,
	'\xCF', '\x8A', '\x00', 0,
	'\xCF', '\x8B', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerCF[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xCF', '\x97', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xCF', '\x99', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\x9B', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\x9D', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\x9F', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\xA1', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\xA3', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\xA5', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\xA7', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\xA9', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\xAB', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\xAD', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\xAF', '\x00', 0,
	0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xCE', '\xB8', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xCF', '\xB8', '\x00', 0,
	0, 0, 0, 0,
	'\xCF', '\xB2', '\x00', 0,
	'\xCF', '\xBB', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xCD', '\xBB', '\x00', 0,
	'\xCD', '\xBC', '\x00', 0,
	'\xCD', '\xBD', '\x00', 0,
};

static const char s_StringToLowerD0[64 * 4] = {
	'\xD1', '\x90', '\x00', 0,
	'\xD1', '\x91', '\x00', 0,
	'\xD1', '\x92', '\x00', 0,
	'\xD1', '\x93', '\x00', 0,
	'\xD1', '\x94', '\x00', 0,
	'\xD1', '\x95', '\x00', 0,
	'\xD1', '\x96', '\x00', 0,
	'\xD1', '\x97', '\x00', 0,
	'\xD1', '\x98', '\x00', 0,
	'\xD1', '\x99', '\x00', 0,
	'\xD1', '\x9A', '\x00', 0,
	'\xD1', '\x9B', '\x00', 0,
	'\xD1', '\x9C', '\x00', 0,
	'\xD1', '\x9D', '\x00', 0,
	'\xD1', '\x9E', '\x00', 0,
	'\xD1', '\x9F', '\x00', 0,
	'\xD0', '\xB0', '\x00', 0,
	'\xD0', '\xB1', '\x00', 0,
	'\xD0', '\xB2', '\x00', 0,
	'\xD0', '\xB3', '\x00', 0,
	'\xD0', '\xB4', '\x00', 0,
	'\xD0', '\xB5', '\x00', 0,
	'\xD0', '\xB6', '\x00', 0,
	'\xD0', '\xB7', '\x00', 0,
	'\xD0', '\xB8', '\x00', 0,
	'\xD0', '\xB9', '\x00', 0,
	'\xD0', '\xBA', '\x00', 0,
	'\xD0', '\xBB', '\x00', 0,
	'\xD0', '\xBC', '\x00', 0,
	'\xD0', '\xBD', '\x00', 0,
	'\xD0', '\xBE', '\x00', 0,
	'\xD0', '\xBF', '\x00', 0,
	'\xD1', '\x80', '\x00', 0,
	'\xD1', '\x81', '\x00', 0,
	'\xD1', '\x82', '\x00', 0,
	'\xD1', '\x83', '\x00', 0,
	'\xD1', '\x84', '\x00', 0,
	'\xD1', '\x85', '\x00', 0,
	'\xD1', '\x86', '\x00', 0,
	'\xD1', '\x87', '\x00', 0,
	'\xD1', '\x88', '\x00', 0,
	'\xD1', '\x89', '\x00', 0,
	'\xD1', '\x8A', '\x00', 0,
	'\xD1', '\x8B', '\x00', 0,
	'\xD1', '\x8C', '\x00', 0,
	'\xD1', '\x8D', '\x00', 0,
	'\xD1', '\x8E', '\x00', 0,
	'\xD1', '\x8F', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerD1[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xD1', '\xA1', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xA3', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xA5', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xA7', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xA9', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xAB', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xAD', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xAF', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xB1', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xB3', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xB5', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xB7', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xB9', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xBB', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xBD', '\x00', 0,
	0, 0, 0, 0,
	'\xD1', '\xBF', '\x00', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerD2[64 * 4] = {
	'\xD2', '\x81', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xD2', '\x8B', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\x8D', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\x8F', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\x91', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\x93', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\x95', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\x97', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\x99', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\x9B', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\x9D', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\x9F', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xA1', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xA3', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xA5', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xA7', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xA9', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xAB', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xAD', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xAF', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xB1', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xB3', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xB5', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xB7', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xB9', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xBB', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xBD', '\x00', 0,
	0, 0, 0, 0,
	'\xD2', '\xBF', '\x00', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerD3[64 * 4] = {
	'\xD3', '\x8F', '\x00', 0,
	'\xD3', '\x82', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x84', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x86', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x88', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x8A', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x8C', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x8E', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xD3', '\x91', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x93', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x95', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x97', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x99', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x9B', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x9D', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\x9F', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xA1', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xA3', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xA5', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xA7', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xA9', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xAB', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xAD', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xAF', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xB1', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xB3', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xB5', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xB7', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xB9', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xBB', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xBD', '\x00', 0,
	0, 0, 0, 0,
	'\xD3', '\xBF', '\x00', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerD4[64 * 4] = {
	'\xD4', '\x81', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x83', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x85', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x87', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x89', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x8B', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x8D', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x8F', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x91', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x93', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x95', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x97', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x99', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x9B', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x9D', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\x9F', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\xA1', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\xA3', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\xA5', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\xA7', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\xA9', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\xAB', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\xAD', '\x00', 0,
	0, 0, 0, 0,
	'\xD4', '\xAF', '\x00', 0,
	0, 0, 0, 0,
	0, 0, 0, 0,
	'\xD5', '\xA1', '\x00', 0,
	'\xD5', '\xA2', '\x00', 0,
	'\xD5', '\xA3', '\x00', 0,
	'\xD5', '\xA4', '\x00', 0,
	'\xD5', '\xA5', '\x00', 0,
	'\xD5', '\xA6', '\x00', 0,
	'\xD5', '\xA7', '\x00', 0,
	'\xD5', '\xA8', '\x00', 0,
	'\xD5', '\xA9', '\x00', 0,
	'\xD5', '\xAA', '\x00', 0,
	'\xD5', '\xAB', '\x00', 0,
	'\xD5', '\xAC', '\x00', 0,
	'\xD5', '\xAD', '\x00', 0,
	'\xD5', '\xAE', '\x00', 0,
	'\xD5', '\xAF', '\x00', 0,
};

static const char s_StringToLowerD5[64 * 4] = {
	'\xD5', '\xB0', '\x00', 0,
	'\xD5', '\xB1', '\x00', 0,
	'\xD5', '\xB2', '\x00', 0,
	'\xD5', '\xB3', '\x00', 0,
	'\xD5', '\xB4', '\x00', 0,
	'\xD5', '\xB5', '\x00', 0,
	'\xD5', '\xB6', '\x00', 0,
	'\xD5', '\xB7', '\x00', 0,
	'\xD5', '\xB8', '\x00', 0,
	'\xD5', '\xB9', '\x00', 0,
	'\xD5', '\xBA', '\x00', 0,
	'\xD5', '\xBB', '\x00', 0,
	'\xD5', '\xBC', '\x00', 0,
	'\xD5', '\xBD', '\x00', 0,
	'\xD5', '\xBE', '\x00', 0,
	'\xD5', '\xBF', '\x00', 0,
	'\xD6', '\x80', '\x00', 0,
	'\xD6', '\x81', '\x00', 0,
	'\xD6', '\x82', '\x00', 0,
	'\xD6', '\x83', '\x00', 0,
	'\xD6', '\x84', '\x00', 0,
	'\xD6', '\x85', '\x00', 0,
	'\xD6', '\x86', '\x00', 0,
	0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerE182[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE2', '\xB4', '\x80', 0,
	'\xE2', '\xB4', '\x81', 0,
	'\xE2', '\xB4', '\x82', 0,
	'\xE2', '\xB4', '\x83', 0,
	'\xE2', '\xB4', '\x84', 0,
	'\xE2', '\xB4', '\x85', 0,
	'\xE2', '\xB4', '\x86', 0,
	'\xE2', '\xB4', '\x87', 0,
	'\xE2', '\xB4', '\x88', 0,
	'\xE2', '\xB4', '\x89', 0,
	'\xE2', '\xB4', '\x8A', 0,
	'\xE2', '\xB4', '\x8B', 0,
	'\xE2', '\xB4', '\x8C', 0,
	'\xE2', '\xB4', '\x8D', 0,
	'\xE2', '\xB4', '\x8E', 0,
	'\xE2', '\xB4', '\x8F', 0,
	'\xE2', '\xB4', '\x90', 0,
	'\xE2', '\xB4', '\x91', 0,
	'\xE2', '\xB4', '\x92', 0,
	'\xE2', '\xB4', '\x93', 0,
	'\xE2', '\xB4', '\x94', 0,
	'\xE2', '\xB4', '\x95', 0,
	'\xE2', '\xB4', '\x96', 0,
	'\xE2', '\xB4', '\x97', 0,
	'\xE2', '\xB4', '\x98', 0,
	'\xE2', '\xB4', '\x99', 0,
	'\xE2', '\xB4', '\x9A', 0,
	'\xE2', '\xB4', '\x9B', 0,
	'\xE2', '\xB4', '\x9C', 0,
	'\xE2', '\xB4', '\x9D', 0,
	'\xE2', '\xB4', '\x9E', 0,
	'\xE2', '\xB4', '\x9F', 0,
};

static const char s_StringToLowerE183[64 * 4] = {
	'\xE2', '\xB4', '\xA0', 0,
	'\xE2', '\xB4', '\xA1', 0,
	'\xE2', '\xB4', '\xA2', 0,
	'\xE2', '\xB4', '\xA3', 0,
	'\xE2', '\xB4', '\xA4', 0,
	'\xE2', '\xB4', '\xA5', 0,
	0, 0, 0, 0,
	'\xE2', '\xB4', '\xA7', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE2', '\xB4', '\xAD', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerE18E[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xEA', '\xAD', '\xB0', 0,
	'\xEA', '\xAD', '\xB1', 0,
	'\xEA', '\xAD', '\xB2', 0,
	'\xEA', '\xAD', '\xB3', 0,
	'\xEA', '\xAD', '\xB4', 0,
	'\xEA', '\xAD', '\xB5', 0,
	'\xEA', '\xAD', '\xB6', 0,
	'\xEA', '\xAD', '\xB7', 0,
	'\xEA', '\xAD', '\xB8', 0,
	'\xEA', '\xAD', '\xB9', 0,
	'\xEA', '\xAD', '\xBA', 0,
	'\xEA', '\xAD', '\xBB', 0,
	'\xEA', '\xAD', '\xBC', 0,
	'\xEA', '\xAD', '\xBD', 0,
	'\xEA', '\xAD', '\xBE', 0,
	'\xEA', '\xAD', '\xBF', 0,
	'\xEA', '\xAE', '\x80', 0,
	'\xEA', '\xAE', '\x81', 0,
	'\xEA', '\xAE', '\x82', 0,
	'\xEA', '\xAE', '\x83', 0,
	'\xEA', '\xAE', '\x84', 0,
	'\xEA', '\xAE', '\x85', 0,
	'\xEA', '\xAE', '\x86', 0,
	'\xEA', '\xAE', '\x87', 0,
	'\xEA', '\xAE', '\x88', 0,
	'\xEA', '\xAE', '\x89', 0,
	'\xEA', '\xAE', '\x8A', 0,
	'\xEA', '\xAE', '\x8B', 0,
	'\xEA', '\xAE', '\x8C', 0,
	'\xEA', '\xAE', '\x8D', 0,
	'\xEA', '\xAE', '\x8E', 0,
	'\xEA', '\xAE', '\x8F', 0,
};

static const char s_StringToLowerE18F[64 * 4] = {
	'\xEA', '\xAE', '\x90', 0,
	'\xEA', '\xAE', '\x91', 0,
	'\xEA', '\xAE', '\x92', 0,
	'\xEA', '\xAE', '\x93', 0,
	'\xEA', '\xAE', '\x94', 0,
	'\xEA', '\xAE', '\x95', 0,
	'\xEA', '\xAE', '\x96', 0,
	'\xEA', '\xAE', '\x97', 0,
	'\xEA', '\xAE', '\x98', 0,
	'\xEA', '\xAE', '\x99', 0,
	'\xEA', '\xAE', '\x9A', 0,
	'\xEA', '\xAE', '\x9B', 0,
	'\xEA', '\xAE', '\x9C', 0,
	'\xEA', '\xAE', '\x9D', 0,
	'\xEA', '\xAE', '\x9E', 0,
	'\xEA', '\xAE', '\x9F', 0,
	'\xEA', '\xAE', '\xA0', 0,
	'\xEA', '\xAE', '\xA1', 0,
	'\xEA', '\xAE', '\xA2', 0,
	'\xEA', '\xAE', '\xA3', 0,
	'\xEA', '\xAE', '\xA4', 0,
	'\xEA', '\xAE', '\xA5', 0,
	'\xEA', '\xAE', '\xA6', 0,
	'\xEA', '\xAE', '\xA7', 0,
	'\xEA', '\xAE', '\xA8', 0,
	'\xEA', '\xAE', '\xA9', 0,
	'\xEA', '\xAE', '\xAA', 0,
	'\xEA', '\xAE', '\xAB', 0,
	'\xEA', '\xAE', '\xAC', 0,
	'\xEA', '\xAE', '\xAD', 0,
	'\xEA', '\xAE', '\xAE', 0,
	'\xEA', '\xAE', '\xAF', 0,
	'\xEA', '\xAE', '\xB0', 0,
	'\xEA', '\xAE', '\xB1', 0,
	'\xEA', '\xAE', '\xB2', 0,
	'\xEA', '\xAE', '\xB3', 0,
	'\xEA', '\xAE', '\xB4', 0,
	'\xEA', '\xAE', '\xB5', 0,
	'\xEA', '\xAE', '\xB6', 0,
	'\xEA', '\xAE', '\xB7', 0,
	'\xEA', '\xAE', '\xB8', 0,
	'\xEA', '\xAE', '\xB9', 0,
	'\xEA', '\xAE', '\xBA', 0,
	'\xEA', '\xAE', '\xBB', 0,
	'\xEA', '\xAE', '\xBC', 0,
	'\xEA', '\xAE', '\xBD', 0,
	'\xEA', '\xAE', '\xBE', 0,
	'\xEA', '\xAE', '\xBF', 0,
	'\xE1', '\x8F', '\xB8', 0,
	'\xE1', '\x8F', '\xB9', 0,
	'\xE1', '\x8F', '\xBA', 0,
	'\xE1', '\x8F', '\xBB', 0,
	'\xE1', '\x8F', '\xBC', 0,
	'\xE1', '\x8F', '\xBD', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerE1B2[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\x83', '\x90', 0,
	'\xE1', '\x83', '\x91', 0,
	'\xE1', '\x83', '\x92', 0,
	'\xE1', '\x83', '\x93', 0,
	'\xE1', '\x83', '\x94', 0,
	'\xE1', '\x83', '\x95', 0,
	'\xE1', '\x83', '\x96', 0,
	'\xE1', '\x83', '\x97', 0,
	'\xE1', '\x83', '\x98', 0,
	'\xE1', '\x83', '\x99', 0,
	'\xE1', '\x83', '\x9A', 0,
	'\xE1', '\x83', '\x9B', 0,
	'\xE1', '\x83', '\x9C', 0,
	'\xE1', '\x83', '\x9D', 0,
	'\xE1', '\x83', '\x9E', 0,
	'\xE1', '\x83', '\x9F', 0,
	'\xE1', '\x83', '\xA0', 0,
	'\xE1', '\x83', '\xA1', 0,
	'\xE1', '\x83', '\xA2', 0,
	'\xE1', '\x83', '\xA3', 0,
	'\xE1', '\x83', '\xA4', 0,
	'\xE1', '\x83', '\xA5', 0,
	'\xE1', '\x83', '\xA6', 0,
	'\xE1', '\x83', '\xA7', 0,
	'\xE1', '\x83', '\xA8', 0,
	'\xE1', '\x83', '\xA9', 0,
	'\xE1', '\x83', '\xAA', 0,
	'\xE1', '\x83', '\xAB', 0,
	'\xE1', '\x83', '\xAC', 0,
	'\xE1', '\x83', '\xAD', 0,
	'\xE1', '\x83', '\xAE', 0,
	'\xE1', '\x83', '\xAF', 0,
	'\xE1', '\x83', '\xB0', 0,
	'\xE1', '\x83', '\xB1', 0,
	'\xE1', '\x83', '\xB2', 0,
	'\xE1', '\x83', '\xB3', 0,
	'\xE1', '\x83', '\xB4', 0,
	'\xE1', '\x83', '\xB5', 0,
	'\xE1', '\x83', '\xB6', 0,
	'\xE1', '\x83', '\xB7', 0,
	'\xE1', '\x83', '\xB8', 0,
	'\xE1', '\x83', '\xB9', 0,
	'\xE1', '\x83', '\xBA', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\x83', '\xBD', 0,
	'\xE1', '\x83', '\xBE', 0,
	'\xE1', '\x83', '\xBF', 0,
};

static const char s_StringToLowerE1B8[64 * 4] = {
	'\xE1', '\xB8', '\x81', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x83', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x85', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x87', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x89', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x8B', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x8D', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x8F', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x91', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x93', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x95', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x97', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x99', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x9B', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x9D', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\x9F', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xA1', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xA3', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xA5', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xA7', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xA9', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xAB', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xAD', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xAF', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xB1', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xB3', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xB5', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xB7', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xB9', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xBB', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xBD', 0,
	0, 0, 0, 0,
	'\xE1', '\xB8', '\xBF', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerE1B9[64 * 4] = {
	'\xE1', '\xB9', '\x81', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x83', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x85', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x87', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x89', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x8B', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x8D', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x8F', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x91', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x93', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x95', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x97', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x99', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x9B', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x9D', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\x9F', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xA1', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xA3', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xA5', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xA7', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xA9', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xAB', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xAD', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xAF', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xB1', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xB3', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xB5', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xB7', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xB9', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xBB', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xBD', 0,
	0, 0, 0, 0,
	'\xE1', '\xB9', '\xBF', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerE1BA[64 * 4] = {
	'\xE1', '\xBA', '\x81', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\x83', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\x85', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\x87', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\x89', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\x8B', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\x8D', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\x8F', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\x91', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\x93', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\x95', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xC3', '\x9F', '\x00', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xA1', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xA3', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xA5', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xA7', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xA9', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xAB', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xAD', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xAF', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xB1', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xB3', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xB5', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xB7', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xB9', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xBB', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xBD', 0,
	0, 0, 0, 0,
	'\xE1', '\xBA', '\xBF', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerE1BB[64 * 4] = {
	'\xE1', '\xBB', '\x81', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x83', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x85', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x87', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x89', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x8B', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x8D', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x8F', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x91', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x93', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x95', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x97', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x99', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x9B', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x9D', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\x9F', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xA1', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xA3', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xA5', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xA7', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xA9', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xAB', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xAD', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xAF', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xB1', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xB3', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xB5', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xB7', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xB9', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xBB', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xBD', 0,
	0, 0, 0, 0,
	'\xE1', '\xBB', '\xBF', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerE1BC[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBC', '\x80', 0,
	'\xE1', '\xBC', '\x81', 0,
	'\xE1', '\xBC', '\x82', 0,
	'\xE1', '\xBC', '\x83', 0,
	'\xE1', '\xBC', '\x84', 0,
	'\xE1', '\xBC', '\x85', 0,
	'\xE1', '\xBC', '\x86', 0,
	'\xE1', '\xBC', '\x87', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBC', '\x90', 0,
	'\xE1', '\xBC', '\x91', 0,
	'\xE1', '\xBC', '\x92', 0,
	'\xE1', '\xBC', '\x93', 0,
	'\xE1', '\xBC', '\x94', 0,
	'\xE1', '\xBC', '\x95', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBC', '\xA0', 0,
	'\xE1', '\xBC', '\xA1', 0,
	'\xE1', '\xBC', '\xA2', 0,
	'\xE1', '\xBC', '\xA3', 0,
	'\xE1', '\xBC', '\xA4', 0,
	'\xE1', '\xBC', '\xA5', 0,
	'\xE1', '\xBC', '\xA6', 0,
	'\xE1', '\xBC', '\xA7', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBC', '\xB0', 0,
	'\xE1', '\xBC', '\xB1', 0,
	'\xE1', '\xBC', '\xB2', 0,
	'\xE1', '\xBC', '\xB3', 0,
	'\xE1', '\xBC', '\xB4', 0,
	'\xE1', '\xBC', '\xB5', 0,
	'\xE1', '\xBC', '\xB6', 0,
	'\xE1', '\xBC', '\xB7', 0,
};

static const char s_StringToLowerE1BD[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBD', '\x80', 0,
	'\xE1', '\xBD', '\x81', 0,
	'\xE1', '\xBD', '\x82', 0,
	'\xE1', '\xBD', '\x83', 0,
	'\xE1', '\xBD', '\x84', 0,
	'\xE1', '\xBD', '\x85', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0,
	'\xE1', '\xBD', '\x91', 0,
	0, 0, 0, 0,
	'\xE1', '\xBD', '\x93', 0,
	0, 0, 0, 0,
	'\xE1', '\xBD', '\x95', 0,
	0, 0, 0, 0,
	'\xE1', '\xBD', '\x97', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBD', '\xA0', 0,
	'\xE1', '\xBD', '\xA1', 0,
	'\xE1', '\xBD', '\xA2', 0,
	'\xE1', '\xBD', '\xA3', 0,
	'\xE1', '\xBD', '\xA4', 0,
	'\xE1', '\xBD', '\xA5', 0,
	'\xE1', '\xBD', '\xA6', 0,
	'\xE1', '\xBD', '\xA7', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerE1BE[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBE', '\x80', 0,
	'\xE1', '\xBE', '\x81', 0,
	'\xE1', '\xBE', '\x82', 0,
	'\xE1', '\xBE', '\x83', 0,
	'\xE1', '\xBE', '\x84', 0,
	'\xE1', '\xBE', '\x85', 0,
	'\xE1', '\xBE', '\x86', 0,
	'\xE1', '\xBE', '\x87', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBE', '\x90', 0,
	'\xE1', '\xBE', '\x91', 0,
	'\xE1', '\xBE', '\x92', 0,
	'\xE1', '\xBE', '\x93', 0,
	'\xE1', '\xBE', '\x94', 0,
	'\xE1', '\xBE', '\x95', 0,
	'\xE1', '\xBE', '\x96', 0,
	'\xE1', '\xBE', '\x97', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBE', '\xA0', 0,
	'\xE1', '\xBE', '\xA1', 0,
	'\xE1', '\xBE', '\xA2', 0,
	'\xE1', '\xBE', '\xA3', 0,
	'\xE1', '\xBE', '\xA4', 0,
	'\xE1', '\xBE', '\xA5', 0,
	'\xE1', '\xBE', '\xA6', 0,
	'\xE1', '\xBE', '\xA7', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBE', '\xB0', 0,
	'\xE1', '\xBE', '\xB1', 0,
	'\xE1', '\xBD', '\xB0', 0,
	'\xE1', '\xBD', '\xB1', 0,
	'\xE1', '\xBE', '\xB3', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerE1BF[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBD', '\xB2', 0,
	'\xE1', '\xBD', '\xB3', 0,
	'\xE1', '\xBD', '\xB4', 0,
	'\xE1', '\xBD', '\xB5', 0,
	'\xE1', '\xBF', '\x83', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBF', '\x90', 0,
	'\xE1', '\xBF', '\x91', 0,
	'\xE1', '\xBD', '\xB6', 0,
	'\xE1', '\xBD', '\xB7', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBF', '\xA0', 0,
	'\xE1', '\xBF', '\xA1', 0,
	'\xE1', '\xBD', '\xBA', 0,
	'\xE1', '\xBD', '\xBB', 0,
	'\xE1', '\xBF', '\xA5', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE1', '\xBD', '\xB8', 0,
	'\xE1', '\xBD', '\xB9', 0,
	'\xE1', '\xBD', '\xBC', 0,
	'\xE1', '\xBD', '\xBD', 0,
	'\xE1', '\xBF', '\xB3', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerE284[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xCF', '\x89', '\x00', 0,
	0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\x6B', '\x00', '\x00', 0,
	'\xC3', '\xA5', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xE2', '\x85', '\x8E', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerE285[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE2', '\x85', '\xB0', 0,
	'\xE2', '\x85', '\xB1', 0,
	'\xE2', '\x85', '\xB2', 0,
	'\xE2', '\x85', '\xB3', 0,
	'\xE2', '\x85', '\xB4', 0,
	'\xE2', '\x85', '\xB5', 0,
	'\xE2', '\x85', '\xB6', 0,
	'\xE2', '\x85', '\xB7', 0,
	'\xE2', '\x85', '\xB8', 0,
	'\xE2', '\x85', '\xB9', 0,
	'\xE2', '\x85', '\xBA', 0,
	'\xE2', '\x85', '\xBB', 0,
	'\xE2', '\x85', '\xBC', 0,
	'\xE2', '\x85', '\xBD', 0,
	'\xE2', '\x85', '\xBE', 0,
	'\xE2', '\x85', '\xBF', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerE286[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE2', '\x86', '\x84', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerE292[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE2', '\x93', '\x90', 0,
	'\xE2', '\x93', '\x91', 0,
	'\xE2', '\x93', '\x92', 0,
	'\xE2', '\x93', '\x93', 0,
	'\xE2', '\x93', '\x94', 0,
	'\xE2', '\x93', '\x95', 0,
	'\xE2', '\x93', '\x96', 0,
	'\xE2', '\x93', '\x97', 0,
	'\xE2', '\x93', '\x98', 0,
	'\xE2', '\x93', '\x99', 0,
};

static const char s_StringToLowerE293[64 * 4] = {
	'\xE2', '\x93', '\x9A', 0,
	'\xE2', '\x93', '\x9B', 0,
	'\xE2', '\x93', '\x9C', 0,
	'\xE2', '\x93', '\x9D', 0,
	'\xE2', '\x93', '\x9E', 0,
	'\xE2', '\x93', '\x9F', 0,
	'\xE2', '\x93', '\xA0', 0,
	'\xE2', '\x93', '\xA1', 0,
	'\xE2', '\x93', '\xA2', 0,
	'\xE2', '\x93', '\xA3', 0,
	'\xE2', '\x93', '\xA4', 0,
	'\xE2', '\x93', '\xA5', 0,
	'\xE2', '\x93', '\xA6', 0,
	'\xE2', '\x93', '\xA7', 0,
	'\xE2', '\x93', '\xA8', 0,
	'\xE2', '\x93', '\xA9', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerE2B0[64 * 4] = {
	'\xE2', '\xB0', '\xB0', 0,
	'\xE2', '\xB0', '\xB1', 0,
	'\xE2', '\xB0', '\xB2', 0,
	'\xE2', '\xB0', '\xB3', 0,
	'\xE2', '\xB0', '\xB4', 0,
	'\xE2', '\xB0', '\xB5', 0,
	'\xE2', '\xB0', '\xB6', 0,
	'\xE2', '\xB0', '\xB7', 0,
	'\xE2', '\xB0', '\xB8', 0,
	'\xE2', '\xB0', '\xB9', 0,
	'\xE2', '\xB0', '\xBA', 0,
	'\xE2', '\xB0', '\xBB', 0,
	'\xE2', '\xB0', '\xBC', 0,
	'\xE2', '\xB0', '\xBD', 0,
	'\xE2', '\xB0', '\xBE', 0,
	'\xE2', '\xB0', '\xBF', 0,
	'\xE2', '\xB1', '\x80', 0,
	'\xE2', '\xB1', '\x81', 0,
	'\xE2', '\xB1', '\x82', 0,
	'\xE2', '\xB1', '\x83', 0,
	'\xE2', '\xB1', '\x84', 0,
	'\xE2', '\xB1', '\x85', 0,
	'\xE2', '\xB1', '\x86', 0,
	'\xE2', '\xB1', '\x87', 0,
	'\xE2', '\xB1', '\x88', 0,
	'\xE2', '\xB1', '\x89', 0,
	'\xE2', '\xB1', '\x8A', 0,
	'\xE2', '\xB1', '\x8B', 0,
	'\xE2', '\xB1', '\x8C', 0,
	'\xE2', '\xB1', '\x8D', 0,
	'\xE2', '\xB1', '\x8E', 0,
	'\xE2', '\xB1', '\x8F', 0,
	'\xE2', '\xB1', '\x90', 0,
	'\xE2', '\xB1', '\x91', 0,
	'\xE2', '\xB1', '\x92', 0,
	'\xE2', '\xB1', '\x93', 0,
	'\xE2', '\xB1', '\x94', 0,
	'\xE2', '\xB1', '\x95', 0,
	'\xE2', '\xB1', '\x96', 0,
	'\xE2', '\xB1', '\x97', 0,
	'\xE2', '\xB1', '\x98', 0,
	'\xE2', '\xB1', '\x99', 0,
	'\xE2', '\xB1', '\x9A', 0,
	'\xE2', '\xB1', '\x9B', 0,
	'\xE2', '\xB1', '\x9C', 0,
	'\xE2', '\xB1', '\x9D', 0,
	'\xE2', '\xB1', '\x9E', 0,
	0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerE2B1[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE2', '\xB1', '\xA1', 0,
	0, 0, 0, 0,
	'\xC9', '\xAB', '\x00', 0,
	'\xE1', '\xB5', '\xBD', 0,
	'\xC9', '\xBD', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xE2', '\xB1', '\xA8', 0,
	0, 0, 0, 0,
	'\xE2', '\xB1', '\xAA', 0,
	0, 0, 0, 0,
	'\xE2', '\xB1', '\xAC', 0,
	0, 0, 0, 0,
	'\xC9', '\x91', '\x00', 0,
	'\xC9', '\xB1', '\x00', 0,
	'\xC9', '\x90', '\x00', 0,
	'\xC9', '\x92', '\x00', 0,
	0, 0, 0, 0,
	'\xE2', '\xB1', '\xB3', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xE2', '\xB1', '\xB6', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xC8', '\xBF', '\x00', 0,
	'\xC9', '\x80', '\x00', 0,
};

static const char s_StringToLowerE2B2[64 * 4] = {
	'\xE2', '\xB2', '\x81', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x83', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x85', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x87', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x89', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x8B', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x8D', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x8F', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x91', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x93', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x95', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x97', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x99', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x9B', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x9D', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\x9F', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xA1', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xA3', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xA5', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xA7', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xA9', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xAB', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xAD', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xAF', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xB1', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xB3', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xB5', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xB7', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xB9', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xBB', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xBD', 0,
	0, 0, 0, 0,
	'\xE2', '\xB2', '\xBF', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerE2B3[64 * 4] = {
	'\xE2', '\xB3', '\x81', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x83', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x85', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x87', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x89', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x8B', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x8D', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x8F', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x91', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x93', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x95', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x97', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x99', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x9B', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x9D', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\x9F', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\xA1', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\xA3', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xE2', '\xB3', '\xAC', 0,
	0, 0, 0, 0,
	'\xE2', '\xB3', '\xAE', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xE2', '\xB3', '\xB3', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerEA99[64 * 4] = {
	'\xEA', '\x99', '\x81', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x83', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x85', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x87', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x89', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x8B', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x8D', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x8F', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x91', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x93', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x95', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x97', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x99', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x9B', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x9D', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\x9F', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\xA1', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\xA3', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\xA5', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\xA7', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\xA9', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\xAB', 0,
	0, 0, 0, 0,
	'\xEA', '\x99', '\xAD', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerEA9A[64 * 4] = {
	'\xEA', '\x9A', '\x81', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x83', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x85', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x87', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x89', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x8B', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x8D', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x8F', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x91', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x93', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x95', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x97', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x99', 0,
	0, 0, 0, 0,
	'\xEA', '\x9A', '\x9B', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerEA9C[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xEA', '\x9C', '\xA3', 0,
	0, 0, 0, 0,
	'\xEA', '\x9C', '\xA5', 0,
	0, 0, 0, 0,
	'\xEA', '\x9C', '\xA7', 0,
	0, 0, 0, 0,
	'\xEA', '\x9C', '\xA9', 0,
	0, 0, 0, 0,
	'\xEA', '\x9C', '\xAB', 0,
	0, 0, 0, 0,
	'\xEA', '\x9C', '\xAD', 0,
	0, 0, 0, 0,
	'\xEA', '\x9C', '\xAF', 0,
	0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xEA', '\x9C', '\xB3', 0,
	0, 0, 0, 0,
	'\xEA', '\x9C', '\xB5', 0,
	0, 0, 0, 0,
	'\xEA', '\x9C', '\xB7', 0,
	0, 0, 0, 0,
	'\xEA', '\x9C', '\xB9', 0,
	0, 0, 0, 0,
	'\xEA', '\x9C', '\xBB', 0,
	0, 0, 0, 0,
	'\xEA', '\x9C', '\xBD', 0,
	0, 0, 0, 0,
	'\xEA', '\x9C', '\xBF', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerEA9D[64 * 4] = {
	'\xEA', '\x9D', '\x81', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x83', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x85', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x87', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x89', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x8B', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x8D', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x8F', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x91', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x93', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x95', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x97', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x99', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x9B', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x9D', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\x9F', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\xA1', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\xA3', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\xA5', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\xA7', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\xA9', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\xAB', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\xAD', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\xAF', 0,
	0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\xBA', 0,
	0, 0, 0, 0,
	'\xEA', '\x9D', '\xBC', 0,
	0, 0, 0, 0,
	'\xE1', '\xB5', '\xB9', 0,
	'\xEA', '\x9D', '\xBF', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerEA9E[64 * 4] = {
	'\xEA', '\x9E', '\x81', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\x83', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\x85', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\x87', 0,
	0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xEA', '\x9E', '\x8C', 0,
	0, 0, 0, 0,
	'\xC9', '\xA5', '\x00', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xEA', '\x9E', '\x91', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\x93', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xEA', '\x9E', '\x97', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\x99', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\x9B', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\x9D', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\x9F', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\xA1', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\xA3', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\xA5', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\xA7', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\xA9', 0,
	0, 0, 0, 0,
	'\xC9', '\xA6', '\x00', 0,
	'\xC9', '\x9C', '\x00', 0,
	'\xC9', '\xA1', '\x00', 0,
	'\xC9', '\xAC', '\x00', 0,
	'\xC9', '\xAA', '\x00', 0,
	0, 0, 0, 0,
	'\xCA', '\x9E', '\x00', 0,
	'\xCA', '\x87', '\x00', 0,
	'\xCA', '\x9D', '\x00', 0,
	'\xEA', '\xAD', '\x93', 0,
	'\xEA', '\x9E', '\xB5', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\xB7', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\xB9', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\xBB', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\xBD', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\xBF', 0,
	0, 0, 0, 0,
};

static const char s_StringToLowerEA9F[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0,
	'\xEA', '\x9F', '\x83', 0,
	0, 0, 0, 0,
	'\xEA', '\x9E', '\x94', 0,
	'\xCA', '\x82', '\x00', 0,
	'\xE1', '\xB6', '\x8E', 0,
	'\xEA', '\x9F', '\x88', 0,
	0, 0, 0, 0,
	'\xEA', '\x9F', '\x8A', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xEA', '\x9F', '\xB6', 0,
	0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerEFBC[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0,
	'\xEF', '\xBD', '\x81', 0,
	'\xEF', '\xBD', '\x82', 0,
	'\xEF', '\xBD', '\x83', 0,
	'\xEF', '\xBD', '\x84', 0,
	'\xEF', '\xBD', '\x85', 0,
	'\xEF', '\xBD', '\x86', 0,
	'\xEF', '\xBD', '\x87', 0,
	'\xEF', '\xBD', '\x88', 0,
	'\xEF', '\xBD', '\x89', 0,
	'\xEF', '\xBD', '\x8A', 0,
	'\xEF', '\xBD', '\x8B', 0,
	'\xEF', '\xBD', '\x8C', 0,
	'\xEF', '\xBD', '\x8D', 0,
	'\xEF', '\xBD', '\x8E', 0,
	'\xEF', '\xBD', '\x8F', 0,
	'\xEF', '\xBD', '\x90', 0,
	'\xEF', '\xBD', '\x91', 0,
	'\xEF', '\xBD', '\x92', 0,
	'\xEF', '\xBD', '\x93', 0,
	'\xEF', '\xBD', '\x94', 0,
	'\xEF', '\xBD', '\x95', 0,
	'\xEF', '\xBD', '\x96', 0,
	'\xEF', '\xBD', '\x97', 0,
	'\xEF', '\xBD', '\x98', 0,
	'\xEF', '\xBD', '\x99', 0,
	'\xEF', '\xBD', '\x9A', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerF09090[64 * 4] = {
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x90', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	'\xF0', '\x90', '\x91', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerF09092[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
};

static const char s_StringToLowerF09093[64 * 4] = {
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	'\xF0', '\x90', '\x93', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerF090B2[64 * 4] = {
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	'\xF0', '\x90', '\xB3', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerF091A2[64 * 4] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
	'\xF0', '\x91', '\xA3', 0,
};

static const char s_StringToLowerF096B9[64 * 4] = {
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	'\xF0', '\x96', '\xB9', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char s_StringToLowerF09EA4[64 * 4] = {
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA4', 0,
	'\xF0', '\x9E', '\xA5', 0,
	'\xF0', '\x9E', '\xA5', 0,
	'\xF0', '\x9E', '\xA5', 0,
	'\xF0', '\x9E', '\xA5', 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char *s_StringToLowerMap[32] = {
	0, 0, 0,
	s_StringToLowerC3,
	s_StringToLowerC4,
	s_StringToLowerC5,
	s_StringToLowerC6,
	s_StringToLowerC7,
	s_StringToLowerC8,
	s_StringToLowerC9,
	0, 0, 0,
	s_StringToLowerCD,
	s_StringToLowerCE,
	s_StringToLowerCF,
	s_StringToLowerD0,
	s_StringToLowerD1,
	s_StringToLowerD2,
	s_StringToLowerD3,
	s_StringToLowerD4,
	s_StringToLowerD5,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char *s_StringToLowerMapE1[64] = {
	0, 0,
	s_StringToLowerE182,
	s_StringToLowerE183,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerE18E,
	s_StringToLowerE18F,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerE1B2,
	0, 0, 0, 0, 0,
	s_StringToLowerE1B8,
	s_StringToLowerE1B9,
	s_StringToLowerE1BA,
	s_StringToLowerE1BB,
	s_StringToLowerE1BC,
	s_StringToLowerE1BD,
	s_StringToLowerE1BE,
	s_StringToLowerE1BF,
};

static const char *s_StringToLowerMapE2[64] = {
	0, 0, 0, 0,
	s_StringToLowerE284,
	s_StringToLowerE285,
	s_StringToLowerE286,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerE292,
	s_StringToLowerE293,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerE2B0,
	s_StringToLowerE2B1,
	s_StringToLowerE2B2,
	s_StringToLowerE2B3,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char *s_StringToLowerMapEA[64] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerEA99,
	s_StringToLowerEA9A,
	0,
	s_StringToLowerEA9C,
	s_StringToLowerEA9D,
	s_StringToLowerEA9E,
	s_StringToLowerEA9F,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char *s_StringToLowerMapEF[64] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerEFBC,
	0, 0, 0,
};

static const char **s_StringToLowerMapMap[16] = {
	0,
	s_StringToLowerMapE1,
	s_StringToLowerMapE2,
	0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerMapEA,
	0, 0, 0, 0,
	s_StringToLowerMapEF,
};

static const char *s_StringToLowerMapF090[64] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerF09090,
	0,
	s_StringToLowerF09092,
	s_StringToLowerF09093,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerF090B2,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char *s_StringToLowerMapF091[64] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerF091A2,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char *s_StringToLowerMapF096[64] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerF096B9,
	0, 0, 0, 0, 0, 0,
};

static const char *s_StringToLowerMapF09E[64] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerF09EA4,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char **s_StringToLowerMapMapF0[64] = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerMapF090,
	s_StringToLowerMapF091,
	0, 0, 0, 0,
	s_StringToLowerMapF096,
	0, 0, 0, 0, 0, 0, 0,
	s_StringToLowerMapF09E,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

static const char ***s_StringToLowerMapMapMap[8] = {
	s_StringToLowerMapMapF0,
	0, 0, 0, 0, 0, 0, 0,
};

// ***************************************************************************

NL_FORCE_INLINE void appendToLowerAsUtf8(std::string &res, const char *str, ptrdiff_t &i)
{
	unsigned char c = str[i];
	unsigned char d, e, f;
	if (c < 0x80)
	{
		if (c >= 'A' && c <= 'Z')
		{
			// 1-byte UTF-8
			c += 'a' - 'A';
		}
	}
	else if (c < 0xC0)
	{
		// non-starting byte
	}
	else if (c < 0xE0)
	{
		// 2-byte UTF-8
		if (((d = str[i + 1]) & 0xC0) == 0x80)
		{
			const char *table = s_StringToLowerMap[c & 0x1F];
			if (table)
			{
				unsigned char idx = (d & 0x3F) << 2;
				if (table[idx])
				{
					res += &table[idx];
					i += 2;
					return;
				}
			}
		}
	}
	else if (c < 0xF0)
	{
		// 3-byte UTF-8
		if (((d = str[i + 1]) & 0xC0) == 0x80 && ((e = str[i + 2]) & 0xC0) == 0x80)
		{
			const char **map = s_StringToLowerMapMap[c & 0x0F];
			if (map)
			{
				const char *table = map[d & 0x3F];
				if (table)
				{
					unsigned char idx = (e & 0x3F) << 2;
					if (table[idx])
					{
						res += &table[idx];
						i += 3;
						return;
					}
				}
			}
		}
	}
	else if (c < 0xF8)
	{
		// 4-byte UTF-8
		if (((d = str[i + 1]) & 0xC0) == 0x80 && ((e = str[i + 2]) & 0xC0) == 0x80 && ((f = str[i + 3]) & 0xC0) == 0x80)
		{
			const char ***mapMap = s_StringToLowerMapMapMap[c & 0x07];
			if (mapMap)
			{
				const char **map = mapMap[d & 0x3F];
				if (map)
				{
					const char *table = map[e & 0x3F];
					if (table)
					{
						unsigned char idx = (f & 0x3F) << 2;
						if (table[idx])
						{
							res += &table[idx];
							i += 4;
							return;
						}
					}
				}
			}
		}
	}
	res += c;
	++i;
}

// ***************************************************************************

std::string toLower(const char *str)
{
	// UTF-8 toLower
	std::string res;
	for (ptrdiff_t i = 0; str[i];)
		appendToLowerAsUtf8(res, str, i);
	return res;
}

// ***************************************************************************

std::string	toLower(const std::string &str)
{
	// UTF-8 toLower
	std::string res;
	res.reserve(str.size() + (str.size() >> 2));
	const char *cstr = &str[0];
	for (ptrdiff_t i = 0; i < (ptrdiff_t)str.size();)
		appendToLowerAsUtf8(res, cstr, i);
	return res;
}

// ***************************************************************************

void appendToLower(std::string &res, const char *str, ptrdiff_t &i)
{
	appendToLowerAsUtf8(res, str, i);
}

// ***************************************************************************

void appendToLower(std::string &res, const std::string &str, ptrdiff_t &i)
{
	appendToLowerAsUtf8(res, &str[0], i);
}

} // NLMISC
